package com.sdy.approval.biz.service;

import java.util.Date;
import java.util.List;

import com.sdy.approval.biz.model.TpApproveFlow;
import com.sdy.approval.biz.model.TpOrder;
import com.sdy.common.model.BizException;
import com.sdy.mvc.service.BaseService;

/**
 * <p>
 * 资源申请表 服务类
 * </p>
 *
 * @author cgj
 * @since 2019-08-09
 */
public interface TpOrderService extends BaseService<TpOrder> {

	/**
	 * 撤回订单和生成的流程节点数据
	 * @param applyNum
	 * @param date
	 * @param userId
	 * @return
	 * @throws BizException
	 */
	Boolean withdrawOrderAndFlows(String applyNum, Date date,  Integer userId) throws BizException;

	/**
	 * <p>
	 * 出发Mq发送消息
	 * </p>
	 *
	 */
	Boolean sendMq(String applyNum, String resId) throws Exception;

	/**
	 * <p>
	 * 流程申请搜索（未提交）
	 * </p>
	 *
	 */
	List<TpOrder> selectAllTpOrderListNotSubmit();
	
	/**
	 * <p>
	 * 流程申请搜索（已提交）
	 * </p>
	 *
	 */
	List<TpOrder> selectAllTpOrderListSubmit();
	
	/**
	 * <p>
	 * 我的订阅申请搜索（多条件）
	 * </p>
	 *
	 */
	//public List<TpOrder> selectTpOrderByConditions(TpOrder TpOrder);
	
	/**
	 * <p>
	 * 我的订阅申请表单(状态【未提交删除操作】单条)
	 * </p>
	 *
	 */
	int deleteApprovalNotSubmit(int id);
	
	/**
	 * <p>
	 * 我的订阅申请表单(状态【未提交删除操作】多条)
	 * </p>
	 *
	 */
	int deleteApprovalNotSubmitMany(Integer[] id);
	
	/**
	 * <p>
	 * 流程审核搜索（多条件）
	 * </p>
	 *
	 */
	List<TpOrder> selectTpOrderByConditionNotApproveds(TpApproveFlow tpApproveFlow);
	
	/**
	 * <p>
	 * 申请单号查询申请单详情
	 * </p>
	 *
	 */
	TpOrder selectOrderByApplicationNum(String applicationNum);
	
	/**
	 * <p>
	 * 一次提交多条数据审批
	 * </p>
	 *
	 */
	Boolean saveOrderList(List<String> applicationNumList, List<String> resIdList, List<Integer> userId, Date date);
	
}
